import Security from '@/common/security'
import VueCookies from 'vue-cookies'
const TokenKey = 'Login-Token'
const SpreadKey = 'Spread-State'
const ConnectKey = 'Client-Id'
const TokenUseType = 'session'
/**
 * 获取保存的Token
 * @returns Object 保存的Token对象
 */
export function getToken () {
  if (TokenUseType === 'session') {
    try {
      return JSON.parse(sessionStorage.getItem(TokenKey))
    } catch (err) {
      return null
    }
  } else {
    return VueCookies.get(TokenKey)
  }
}

/**
 * 设置Token
 * @param {*} data token的信息
 */
export function setToken (data) {
  if (TokenUseType === 'session') {
    sessionStorage.setItem(TokenKey, JSON.stringify(data))
  } else {
    // 1598281116
    // var timestamp = data.expired_at - Date.parse(new Date())
    // VueCookies.set(TokenKey, data, timestamp)
    // console.log('[expired_at]', token.expired_at)
    // console.log('[toUTCString]', new Date(token.expired_at * 1000).toUTCString())
    // console.log('[toUTCString]', new Date(token.expired_at * 1000).Format('yy-MM-dd hh:mm:ss'))
    // console.log('[now]', Date.parse(new Date()))
    // console.log('[timestamp]', timestamp)
    // console.log('[expires]', token.expired_at - Date.parse(new Date()))

    VueCookies.set(TokenKey, data, 60 * 60 * 12)
  }
}

/**
 * 移除Token
 */
export function removeToken () {
  if (TokenUseType === 'session') {
    sessionStorage.removeItem(TokenKey)
  } else {
    VueCookies.remove(TokenKey)
  }
}

/**
 * 获取有效的授权token
 * @returns String 授权token字符串
 */
export function getAuthToken () {
  const token = getToken()
  const timestamp = Date.parse(new Date())
  if (token !== null && token.access_token && timestamp > token.expired_at) {
    return token.access_token
  } else {
    return ''
  }
}

/**
 * 获取AccessToken（加密访问）
 * @returns String 加密的授权Token字符串
 */
export function getAccessToken () {
  const authToken = getAuthToken()
  if (authToken) {
    return Security.encrypt(authToken)
  } else {
    return ''
  }
}

/**
 * 获取保存的Token
 * @returns Object 保存的Token对象
 */
export function getConnect () {
  try {
    return JSON.parse(sessionStorage.getItem(ConnectKey))
  } catch (err) {
    return null
  }
}

/**
 * 设置Token
 * @param {*} data token的信息
 */
export function setConnect (data) {
  sessionStorage.setItem(ConnectKey, JSON.stringify(data))
}

/**
 * 移除Token
 */
export function removeConnect () {
  sessionStorage.removeItem(ConnectKey)
}

/**
 * 获取保存的Token
 * @returns Object 保存的Token对象
 */
export function getSpread () {
  return sessionStorage.getItem(SpreadKey)
}

/**
 * 设置Token
 * @param {*} data token的信息
 */
export function setSpread (data) {
  sessionStorage.setItem(SpreadKey, data)
}

/**
 * 移除Token
 */
export function removeSpread () {
  sessionStorage.removeItem(SpreadKey)
}
